package com.example.demo.utils;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 *  封装controller层方法统一响应数据格式类
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ResultObj {
    private Integer code; //响应吗
    private String msg; //响应信息
    private Boolean success; // 请求是否成功
    private Object data; //响应具体数据

    /**
     * 封装成功方法
     */
    public static ResultObj ok(){
        // 创建ResultObj对象
        ResultObj res = new ResultObj();
        res.setCode(200);
        res.setMsg("请求成功");
        res.setSuccess(true);
        return res;
    }

    /**
     * 封装成功方法,并返回值
     */
    public static ResultObj ok(Object data){
        ResultObj res = new ResultObj();
        res.setCode(200);
        res.setMsg("请求成功");
        res.setSuccess(true);
        res.setData(data);
        return res;
    }

    /**
     * 封装失败方法
     */
    public static ResultObj error(){
        // 创建ResultObj对象
        ResultObj res = new ResultObj();
        res.setCode(500);
        res.setMsg("请求失败");
        res.setSuccess(false);
        return res;
    }

    /**
     * 修改参数方法
     */
    // 修改状态码
    public ResultObj code(Integer code){
        this.setCode(code);
        return this;
    }
    // 修改响应信息
    public ResultObj msg(String msg){
        this.setMsg(msg);
        return this;
    }
    // 修改请求结果
    public ResultObj success(boolean success){
        this.setSuccess(success);
        return this;
    }
    // 修改响应具体数据
    public ResultObj data(Object data){
        this.setData(data);
        return this;
    }

}
